package org.study.javafx.study01.grid.code;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import lombok.extern.slf4j.Slf4j;
import org.study.javafx.study01.AppStarter;
import org.study.javafx.study01.config.AppConfig;

/**
 * 作用描述
 *
 * @author doveylovey
 * @version v1.0.0
 * @email 1135782208@qq.com
 * @date 2024年08月18日
 */
@Slf4j
public class GridCode1 extends Application {
    /**
     * 直接运行此方法会报如下错误：
     * 错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序
     * 请运行 {@link AppStarter#main(String[])}
     */
    public static void main(String[] args) {
        AppConfig.init();
        launch(args);
    }

    @Override
    public void init() throws Exception {
        super.init();
    }

    @Override
    public void start(Stage stage) throws Exception {
        GridPane pane = new GridPane();
        // 显示网格线以便于调试
        pane.setGridLinesVisible(true);
        pane.setAlignment(Pos.CENTER);
        pane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
        pane.setHgap(3.5);
        pane.setVgap(6.5);
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 6; j++) {
                Button button = new Button("Button-" + i + "-" + j);
                button.setFont(Font.font(28));
                if (i < j) {
                    button.setTextFill(Color.RED);
                } else if (i > j) {
                    button.setTextFill(Color.BLUE);
                } else {
                    button.setTextFill(Color.YELLOW);
                }
                button.setOnAction(event -> {
                    String buttonId = button.getId();
                    String fontName = button.getFont().getName();
                    double fontSize = button.getFont().getSize();
                    String buttonText = button.getText();
                    log.info("点击的按钮名称为：{}", buttonText);
                });
                pane.add(button, j + 1, i + 1);
            }
        }
        // 注意使用VBox、HBox的区别
        Scene scene = new Scene(new VBox(pane), 500, 300);
        // Scene scene = new Scene(new HBox(pane), 500, 300);
        stage.setTitle("JavaFx布局示例：GridPane");
        // 窗口最大化
        stage.setMaximized(true);
        stage.setScene(scene);
        stage.show();
    }

    @Override
    public void stop() throws Exception {
        super.stop();
    }
}
